"""
    复习-属性
        1.作用：保护数据有效性
    属性各种写法
"""
# 写法1：读写属性
#       在实例变量读写过程中进行控制（数据验证，修改）
# 快捷键：props + 回车
class Wife:
    def __init__(self, name="", age=0):
        self.name = name
        self.age = age # _Wife__age 私有变量 _类名__变量
    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self, value):
        if value > 30:
            value = 30
        elif value < 18:
            value = 18
        self.__age = value


# 写法2：只读属性
#       为私有变量提供，读取功能
# 快捷键：prop + 回车
class Wife:
    def __init__(self, name=""):
        self.name = name
        # 由类内部确定的数据，类外不能修改
        self.__age = 20 # _Wife__age 私有变量 _类名__变量

    @property
    def age(self):
        return self.__age

# 写法2：只写属性
#       实例变量在类的外部只能修改不能读取
# 快捷键：无
class Wife:
    def __init__(self, name=""):
        self.name = name
        # 由类内部确定的数据，类外不能修改
        self.__age = 20  # _Wife__age 私有变量 _类名__变量

    age = property()

    @age.setter
    def age(self,value):
        self.__age = value

shuang_er = Wife("双儿",100)
print(shuang_er.__dict__)
print(shuang_er.name)
print(shuang_er.age)